# src/data/schema.py
from pydantic import BaseModel, Field
from typing import Generic, TypeVar, Optional, List

T = TypeVar("T")  # 泛型类型

"""这里的 BaseModel 和 Generic[T] 不是函数参数，而是 Python 继承（Inheritance）的写法，和 JavaScript 的函数调用 fn(arg1, arg2) 不同。"""


class BaseResponse(BaseModel, Generic[T]):
    code: int = Field(default=200, title="状态码")
    msg: str = Field(default="success", title="提示信息")
    data: Optional[T] = None  # 实际数据（泛型）

    @classmethod
    def success(cls, data: T):
        """成功响应快捷方法"""
        return cls(code=200, msg="success", data=data)

    @classmethod
    def error(cls, msg: str, code: int = 400):
        """错误响应快捷方法"""
        return cls(code=code, msg=msg, data=None)
